package vue;

import java.awt.AlphaComposite;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Rectangle;
import java.awt.Toolkit;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

import javax.swing.JPanel;

import controller.Controleur;

import model.Case;
import model.Personnage;
import model.Plateau;





/*
 * 
 * Vue de la case (contenu) mais uniquement IHM (le dessin).
 * 
 * A mettre i�i le code de model.case (pour la dessiner)
 */
public class DessinCase extends JPanel {
	
	
	private static final long serialVersionUID = 1L;
	
	private Color couleur ;
	private final int x,y;
	private Image perso, fond;
	
	public DessinCase(int x, int y){
		super();
		this.x = x;
		this.y = y;
		couleur = Color.red;
		setBackground(couleur);	
		// setPreferredSize et setSize permettent de fixer
		// les dimensions de la case
		setPreferredSize(new Dimension(60,60)); 
		setSize(getPreferredSize());
		// les évènements souris sur la case sont écoutés par la case elle-même
		//addMouseListener(this);
	}
	
	// cette fonction remet la case à sa couleur d'origine
	public void dessine(Case laCase){
		if (laCase.isSelectionner()) {
			couleur=Color.green;
		} else if (laCase.isCible()) {
			couleur=Color.blue;
		} else {
			couleur=Color.yellow;
		}
		Toolkit tk = Toolkit.getDefaultToolkit();
		fond = tk.getImage(laCase.getChemainFichierImage());
		perso = tk.getImage(laCase.getImagePerso());
		this.setVisible(true);
		//setBackground(couleur);
		repaint();
	}
	

	// la méthode paintComponent gère 
	// l'affichage de la case 
	public void paintComponent(Graphics g){
		// on affiche d'abord la case
		super.paintComponent(g);
		Graphics2D g2 = (Graphics2D)g;
		g.drawImage(fond, 0, 0, getWidth(), getHeight(), this);
		g.drawImage(perso, 0, 0, getWidth(), getHeight(), this);
		g2.setColor(couleur);
		g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER,0.3f));
		if (couleur!=Color.yellow)
			g2.fillRoundRect(0, 0, this.getWidth(), this.getHeight(), 5, 5);
	}   
}
